/**  
 * StartMaiguoPersonalWebMain.java
 * com.maiguo.web.runntime
 * 
 * @author gaoqs
 * @date 2015年3月5日 上午10:48:28
 * 版权所有
 */
package com.kuaiying.kuai.ying.runtime;


import org.beetl.ext.jfinal.BeetlRenderFactory;

import com.jfinal.config.Constants;
import com.jfinal.config.Handlers;
import com.jfinal.config.Interceptors;
import com.jfinal.config.JFinalConfig;
import com.jfinal.config.Plugins;
import com.jfinal.config.Routes;
import com.jfinal.core.JFinal;
import com.jfinal.plugin.activerecord.ActiveRecordPlugin;
import com.jfinal.plugin.c3p0.C3p0Plugin;
import com.jfinal.plugin.ehcache.EhCachePlugin;
import com.kuaiying.kuai.ying.controller.IndexController;
import com.kuaiying.kuai.ying.controller.user.UserController;
import com.kuaiying.kuai.ying.model.user.UserModel;

/**
 * 启动jfinal
 *
 * @author gaoqs
 * @date 2015年3月5日 上午10:48:28
 */

public class StartWebMain extends JFinalConfig {

    /**
     * 配置常量
     */
    public void configConstant(Constants me) {
        // 加载少量必要配置，随后可用getProperty(...)获取值
        loadPropertyFile("db.properties");

        boolean isLoacal = getPropertyToBoolean("devMode", false);
        me.setDevMode(isLoacal);

        me.setMainRenderFactory(new BeetlRenderFactory());
        me.setError404View("common/404.html");
        me.setError500View("common/500.html");

    }

    /**
     * 配置controller路由
     */
    public void configRoute(Routes me) {
        me.add("/", IndexController.class, "/index"); // 首页controller
        me.add("/user", UserController.class); //用户controller
        
    }

    /**
     * 配置插件
     */
    public void configPlugin(Plugins me) {
        // 配置C3p0数据库连接池插件
        C3p0Plugin c3p0Plugin = new C3p0Plugin(getProperty("jdbcUrl"), getProperty("user"), getProperty("password").trim());
        me.add(c3p0Plugin);

        // 配置ActiveRecord插件
        ActiveRecordPlugin arp = new ActiveRecordPlugin(c3p0Plugin);
        me.add(arp);
        arp.addMapping("kuai_user", UserModel.class); // 用户model

        // 缓存
        me.add(new EhCachePlugin());
    }

    /**
     * 配置全局拦截器
     */
    public void configInterceptor(Interceptors me) {

    }

    /**
     * 配置处理器
     */
    public void configHandler(Handlers me) {

    }

    /**
     * 建议使用 JFinal 手册推荐的方式启动项目 运行此 main 方法可以启动项目，此main方法可以放置在任意的Class类定义中，不一定要放于此
     */
    public static void main(String[] args) {
        JFinal.start("webapp", 80, "/", 5);
    }

}
